<?php
/**
 * 工具类，提供加密解密等方法
 * @author Administrator
 *
 */
class des{
	private static $key = "renooos";
	private static function Encrypt($key,$text){          
		$size = mcrypt_get_block_size('des','ecb');   
		$text = self::pkcs5_pad($text, $size);   
		$td = mcrypt_module_open('des', '', 'ecb', '');   
		//srand((double)microtime() * 1000000);  
		$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);   
		mcrypt_generic_init($td, $key, $iv);   
		$data = mcrypt_generic($td, $text);   
		mcrypt_generic_deinit($td);   
		mcrypt_module_close($td);   
		$data = base64_encode($data);   
		return $data;   
	}	
	private static function Decrypt($key,$encrypted){          
		$encrypted = base64_decode($encrypted);   
		$td = mcrypt_module_open('des','','ecb','');  
		//srand((double)microtime() * 1000000);      
		$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);   
		$ks = mcrypt_enc_get_key_size($td);   
		mcrypt_generic_init($td, $key, $iv);               
		$decrypted = mdecrypt_generic($td, $encrypted);   
		mcrypt_generic_deinit($td);      
		mcrypt_module_close($td);   
		$plain_text=self::pkcs5_unpad($decrypted);   
		return $plain_text;      
	}
	private static function pkcs5_pad ($text, $blocksize){          
		$pad = $blocksize - (strlen($text) % $blocksize);   
		return $text . str_repeat(chr($pad), $pad);   
	}
	private static function pkcs5_unpad($text){          
		$pad = ord($text{strlen($text)-1});   
		if ($pad > strlen($text)){   
		return false;   
		}   
		if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){   
		return false;   
		}   
		return substr($text, 0, -1 * $pad);   
	} 
	/**
	 * des加密文件
	 * */
	public static function DesE($text){
		return self::Encrypt(self::$key, $text);
	}
	
	/**
	 * des解密文件
	 * */
	public static function DesD($text){
		return self::Decrypt(self::$key, $text);
	} 
	/**
	 * des加密文件
	 * */
	public static function DesEf($file){
		$text=file_get_contents($file);
		$deseText=self::Encrypt(self::$key, $text);
		file_put_contents($file, $deseText);		
	}
	
	/**
	 * des解密文件
	 * */
	public static function DesDf($file){
		$text=file_get_contents($file);
		$desDText=self::Decrypt(self::$key, $text);
		file_put_contents($file, $desDText);
	}
}

